package com.xiangge.ploy;

import com.xiangge.domain.Animal;
import com.xiangge.domain.Cat;
import com.xiangge.domain.Dog;

public class PloyDemo1 {
    public static void main(String[] args) {
        // 子 子 new 子
        Dog dog = new Dog();
        method(dog); // method(new Dog())
        method2(dog); // method(new Dog())
    }

    // 定义一个方法，打印动物对于的功能
    public static void method(Animal animal){ // 将父类接口作为形参传入
        animal.eat(); // 使用父类调用公共方法
    }

    public static void method2(Animal animal){
        if (animal instanceof Dog){ // 判断animal中实际类型是Dog时，返回true
            Dog dog = (Dog) animal; // Dog dog = new Dog()
            dog.lookHome();
            dog.eat();
            // 在main方法中使用 方法名(new 调用类名) 来进行调用 --- method2(new Dog())
        }
        if (animal instanceof Cat) { // 判断animal中实际类型是Cat时，返回true
            Cat cat = (Cat) animal; // Cat cat = new Cat()
            cat.catchMouse();
            cat.eat();
        }
    }
}
